/*
 * write "Hello"(ASCII) to port 0x996
 * compile: 
 */
.section ".text"
.global _start
_start:
    mov x4, 0x996
    mov x5, 0x48  // 'H'
    strb w5, [x4] 
    mov x5, 0x65  // 'e'
    strb w5, [x4] 
    mov x5, 0x6c  // 'l'
    strb w5, [x4] 
    mov x5, 0x6c  // 'l'
    strb w5, [x4] 
    mov x5, 0x6f  // 'o'
    strb w5, [x4] 
    mov x5, '!'   // '!'
    strb w5, [x4]
    mov x5, 0x0a  // '\n'
    strb w5, [x4] 
    
    // 尝试使用多种方法触发VM退出
    
    // 方法1: 使用HVC指令触发VM退出
    // 使用一个特定的立即数，便于识别
    HVC #0x0
    
    // 方法2: 使用SMC指令触发VM退出
    SMC #0
    
    // 方法3: 生成未定义指令异常
    .word 0xdeadbeef   // 无效指令
    
    // 如果以上方法都没有触发退出，则执行到这里
1:  // 发送结束消息
    mov x4, 0x996
    mov x5, 0x45  // 'E'
    strb w5, [x4]
    mov x5, 0x4e  // 'N'
    strb w5, [x4]
    mov x5, 0x44  // 'D'
    strb w5, [x4]
    mov x5, 0x0a  // '\n'
    strb w5, [x4]
    
    // 无限循环WFI以确保CPU不继续执行
    WFI
    b 1b
    